/*
 * Copyright (c) 2017. 深圳掌控网络有限公司. All rights reserved.
 */

package com.yiqi.lottery.framework.api;

import com.suozhang.framework.entity.bo.PageData;
import com.suozhang.framework.entity.bo.Result;

import com.suozhang.framework.entity.bo.UserInfoBo;
import com.suozhang.framework.utils.T;
import com.yiqi.lottery.entity.bo.*;

import java.util.HashMap;

import io.reactivex.Observable;
import retrofit2.http.*;


public interface UserApi {


    /**
     * 用户注册
     */
    @POST("/v1/user")
    Observable<Result<UserInfoBo>> userRegister(@Body RegisterBo registerBo);

    /**
     * 获取验证码 用户注册
     */
    @GET("/v1/user/send-code")
    Observable<Result<String>> userRegisterSendCode(@Query("mobile") String mobile);

    /**
     * 用户登陆
     */
    @POST("/v1/user/login")
    Observable<Result<UserInfoBo>> userLogin(@Body RegisterBo registerBo);

    /**
     * 忘记密码
     */
    @POST("/v1/user/find-password")
    Observable<Result<String>> userResetPassword(@Body RegisterBo registerBo);

    /**
     * 获取用户信息
     */
    @GET("/v1/user/{id}")
    Observable<Result<UserInfoBo>> mineGetUserInfo(@Path("id") Integer UserId);

    /**
     * 实名认证
     */
    @POST("/v1/user/user-auth")
    Observable<Result<String>> mineUserAuth(@Body RegisterBo registerBo);

    /**
     * 验证手机号
     */

    @POST("v1/user/check-mobile")
    Observable<Result<String>> userVerifyMobile(@Body RegisterBo registerBo);

    /**
     * 绑定手机号
     */

    @POST("v1/user/reset-mobile")
    Observable<Result<String>> userBindMobile(@Body RegisterBo registerBo);

    /**
     * 用户登出
     * v1/user/logout
     * */

    @POST("v1/user/logout")
    Observable<Result<String>> userLogout();

    /**
     * 用户登出
     * v1/user/logout
     * */

    @POST("v1/user/reset-password")
    Observable<Result<String>> editPwd(@Body EditPwdBo editPwdBo);
    /**
     *  获取上传七牛token
     */
    @GET ("/v1/app/upload-token")
    Observable<Result<TokenBo>> getQiniuToken();
    /**
     *  修改用户信息
     */
    @PUT ("v1/user/{id}")
    Observable<Result<UserInfoBo>> editUserInfo(@Path("id")Integer id,@Body UserInfoBo userInfoBo);
    /**
     * 投注站信息
     * */
    @GET ("v1/user/shop")
    Observable<Result<StationBo>> getShopInfo();
        /**
         * 提现账户设置
         * */
    @POST("v1/user/withdraw")
    Observable<Result<String>> editWithDraw(@Body WithdrawBo withdrawBo);

    /**
     * 提现账户设置
     * */
    @GET("v1/user/withdraw")
    Observable<Result<WithdrawBo>> getWithDraw();

    /**
     * 我的订单
     * */
    @GET("/v1/order/myorder")
    Observable<Result<PageData<OrderListBo>>> getMyOrder(@Query("page") int page,@Query("order_type") int order_type);
    /**
     * 我的合买
     * */
    @GET("v1/copurce/mycopurce")
    Observable<Result<PageData<OrderListBo>>> getMycopurceOrder(@Query("page") int page);
    /**
     * 账户明细
     * */
    @GET("v1/balance")
    Observable<Result<BalanceBo>> getMyBalance();

    /**
     * 充值
     * */
    @POST("v1/balance/recharge")
    Observable<Result<RechargeBo>> toRecharge(@Body RechargeBo rechargeBo);
    /**
     * 提现
     * */
    @POST("v1/balance/withdraw")
    Observable<Result<RechargeBo>> toWithdraw(@Body RechargeBo rechargeBo);
    /**
     * 充值回调
     * */
    @POST("v1/balance/recharge-callback")
    Observable<Result<String>> getRechargeCallback(@Body RechargeCallBackBo rechargeBo);

    /**
     * 获取我的信息
     * */

    /**
     * 获取用户信息
     */
    @GET("v1/user/info")
    Observable<Result<UserInfoBo>> getUserInfo();
    /**
     * 创建订单
     */
    @POST("v1/order")
    Observable<Result<String>> createOrder(@Body OrderBo orderBo);

    /**
     * 发单
     */
    @POST("v1/order")
    Observable<Result<String>> createBillingOrder(@Body BillingBo orderBo);

    /**
     * 奖金优化订单
     */
    @POST("v1/order/optimiz")
    Observable<Result<String>> orderOptimiz(@Body HashMap<String,Object> map);

    /**
     * 创建合买(投注)
     */
    @POST("v1/copurce")
    Observable<Result<String>> createCopurch(@Body HashMap<String,Object> couprceBo);

    /**
     * 追号列表
     */
    @GET("v1/charsing")
    Observable<Result<PageData<CharsBo>>> getCharsingList(@Query("page") int page);
    /**
     * 追号详情
     */
    @GET("v1/charsing/{id}")
    Observable<Result<CharsBo>> getCharsingdEATIL(@Path("id") int ID);


    /**
     * 跟单
     */
    @POST("/v1/order/follow")
    Observable<Result<String>> followOrder(@Body OrderBo orderBo);

    /**
     * 追号详情
     */
    @GET("v1/order/{id}")
    Observable<Result<OrderDetailBo>> getOrderDetail(@Path("id") int order_id,@Query("type") int type);

    /**
     * 追号详情
     */
    @GET("v1/copurce/{id}")
    Observable<Result<OrderDetailBo>> getCopurceDetail(@Path("id") int order_id);



    @HTTP(method = "PUT", path = "v1/order/{order_id}", hasBody = true)
    Observable<Result<String>> billingOrder(@Path("order_id")String order_id,@Body HashMap<String, String> content);


    /**
     * 追号列表
     */
    @GET("v1/balance/check")
    Observable<Result<PayStautsBo>> getYLPay(@Query("id") String id);


}
